在多个帧上分布渲染

使用渐进渲染 2D 视口 (Progressive Rendering Viewport 2D)节点将渲染负载分布在多个帧上,以减少渲染一整个帧所需的工作量和时间。Kanzi 继续渲染每个帧中渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点未渲染的所有内容。

Kanzi 每 n 帧更新 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点渲染的所有内容,其中 n 代表 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点使用的顶级渲染通道的子渲染通道数量。 例如,如果 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点包含使用具有 4 个渲染通道的组渲染通道 (Group Render Pass)场景 (Scene) 节点,Kanzi 会每 4 帧更新 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点渲染的内容。使用渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点来渲染交互式内容可能会使这些内容响应速度变慢。

您将复杂及渲染密集型内容划分为偶数部分时,可以使用渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点来提高应用程序的渲染性能。

渐进渲染 2D 视口 (Progressive Rendering Viewport 2D)Kanzi 渲染一帧中的一个渲染通道。为防止帧速率波动,通过 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点使用的渲染通道将渲染分布到偶数部分。要将渲染分布到偶数部分,请确保每个渲染通道渲染:

例如,使用渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点以不同的更新频率渲染内容。要以 60 fps 渲染部分内容,以 30 fps 渲染其余内容,所有内容总计必须在 16 ms 或更短时间 (1000 ms / 60 fps = 16.6 ms) 内渲染。如果渲染 60 fps 内容所用的时间最长为 10 ms,要以 30 fps 显示其余内容,则应:

  1. 将要以 30 fps 渲染的内容分成两部分或三部分,使每部分在 6 ms 或更短的时间内渲染。要以 60 fps 的速度渲染每帧的 60 fps 内容,60 fps 和 30 fps 内容的总渲染时间不得高于 16.6 ms。
  2. 使用渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点渲染 30 fps 内容。如果将内容分成两部分,则 Kanzi 每两帧渲染整个 30 fps 内容。如果将内容分成三部分,则Kanzi 每三帧渲染整个 30 fps 的内容。

建议

将内容分成多个部分时,要了解渲染每个部分需要多少时间,应:

  1. 预览 (Preview) 中点击 进入分析 (Analyze) 模式,右键点击 ,然后选择性能 HUD (Performance HUD),或启用 application.cfg 文件中的性能 HUD (Performance HUD)onConfigure() 函数(使用 Kanzi Engine API 时)。请参阅在预览 (Preview) 中分析您的应用程序PerformanceInfoLevel
  2. 隐藏您不想渲染的内容。Kanzi Studio工程 (Project) 中,选择您要隐藏的节点并按下 Ctrl H,或添加并禁用可见性 (Visible) 属性。

要了解如何使用 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点在多个帧上分布内容渲染,请完成渐进渲染教程。请参阅 教程:渐进渲染

使用 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点

要使用 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点,请执行以下操作:

  1. 使用 Kanzi 过滤器或组合对象源 (Combine Object Source) 项收集您要在多个帧上分布的节点。请参阅 过滤器使用对象源
    例如,使用标签过滤器 (Tag Filter) 收集节点:
    1. 工程 (Project) 中,选择您要在多个帧上渲染的节点,并在属性 (Properties) 中使用标签 (Tags) 属性标记要在不同的渲染通道中渲染的节点。请参阅 使用标签
      例如,要将渲染分为两个部分,使用Pass 1 标签标记您要使用第一个渲染通道进行渲染的节点,使用Pass 2 标签标记您要使用第二个渲染通道进行渲染的节点。
    2. 素材库 (Library)按下 Alt 并右键点击 渲染 (Rendering) 并创建和您在上一步中标记节点所使用的标签数量一样多的标签过滤器 (Tag Filter) 过滤器,在属性 (Properties) 中将已包括标签 (Included Tags) 属性设为您要使用该标签过滤器 (Tag Filter) 收集的标签。
      例如,将第一个标签过滤器 (Tag Filter) 过滤器命名为 Tag Filter Pass 1,并在属性 (Properties) 中将已包括标签 (Included Tags) 属性设为Pass 1
  2. 素材库 (Library) > 渲染 (Rendering)按下 Alt 并右键点击渲染通道 (Render Passes),创建渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 用于渲染其内容的组渲染通道 (Group Render Pass)
  3. 素材库 (Library)按下 Alt 并右键点击您在上一步中创建的组渲染通道 (Group Render Pass),并创建:
  4. 素材库 (Library) 中,选择您在上一步中创建的各绘图对象渲染通道 (Draw Objects Render Pass),并且在属性 (Properties) 中将对象源 (Object Source) 属性设为该过滤器或用于收集您希望渲染通道渲染的节点的组合对象源 (Combine Object Source) 项。
    例如,选择第一个绘图对象渲染通道 (Draw Objects Render Pass),并将对象源 (Object Source) 属性设为Tag Filter Pass 1
  5. 工程 (Project)按下 Alt 并右键点击您要创建渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点的位置,选择渐进渲染 2D 视口 (Progressive Rendering Viewport 2D),在属性 (Properties) 中添加渲染通道 (Render Pass) 属性并将其设为您在这个过程的前面步骤中创建的组渲染通道 (Group Render Pass)
  6. 工程 (Project) 中,将您在第一步中收集的内容添加到 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点。
  7. 在早前操作过程中您创建的 清除渲染通道 (Clear Render Pass) 中,添加并设置 清除颜色 (Clear Color) 属性以生成有意义的颜色输出,包括阿尔法通道。

通过渐进渲染使用动画

无法使用 动画播放器 (Animation Player) 或状态迁移动画化 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点中的节点。

要将动画用于渐进渲染:

  1. 工程 (Project) 中,选择您要使用动画的 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点。
  2. 属性 (Properties) 中,将时间线 (Timeline) 属性设为您要使用的动画 (Animation)动画剪辑 (Animation Clip)时间线序列 (Timeline Sequence)

渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点渲染的内容应用抗锯齿

要对 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点渲染的内容应用抗锯齿,在 工程 (Project) 中选择 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点,在 属性 (Properties) 中添加 多重采样级别 (Multisample Level) 属性并将其设置为您希望使用的抗锯齿采样数量。
请查看您希望用于运行 Kanzi 应用程序的设备的相关文档,了解设备支持的值,因为抗锯齿采样数量取决于设备的支持程度。如果您将多重采样级别 (Multisample Level) 属性设置为您的设备不支持的值,Kanzi Engine 会将该值限制为设备驱动程序支持的最大值。

渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 属性类型和消息

要查看 渐进渲染 2D 视口 (Progressive Rendering Viewport 2D) 节点可用属性类型和消息的完整列表,请参阅 Progressive rendering viewport 2D

另请参阅

教程:渐进渲染

过滤器

使用对象源

渲染最佳实践